package com.reactim.user.repository;

import com.reactim.user.entity.FriendGroup;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Optional;

/**
 * 好友分组Repository
 */
@Repository
public interface FriendGroupRepository extends JpaRepository<FriendGroup, Long> {
    
    /**
     * 查找用户的所有分组，按排序顺序
     */
    List<FriendGroup> findByUserIdOrderBySortOrderAsc(Long userId);
    
    /**
     * 查找用户的默认分组
     */
    Optional<FriendGroup> findByUserIdAndIsDefaultTrue(Long userId);
    
    /**
     * 查找用户指定名称的分组
     */
    Optional<FriendGroup> findByUserIdAndName(Long userId, String name);
    
    /**
     * 统计用户的分组数量
     */
    long countByUserId(Long userId);
    
    /**
     * 查找用户的最大排序顺序
     */
    @Query("SELECT COALESCE(MAX(fg.sortOrder), 0) FROM FriendGroup fg WHERE fg.userId = :userId")
    Integer findMaxSortOrderByUserId(@Param("userId") Long userId);
    
    /**
     * 检查分组名称是否存在
     */
    boolean existsByUserIdAndName(Long userId, String name);
    
    /**
     * 删除用户的所有分组
     */
    void deleteByUserId(Long userId);
}